/**
 * 树染色红白二色，白色不能相邻，问方案。
 * Ri为i红色i子树的染色方案，Wi为i白色i子树的染色方案
 * Di为i子树的总染色方案，则:
 * Di = Ri + Wi
 * Ri = PI{Dj, j是i的儿子}
 * Wi = PI{Rj, j是i的儿子}
 * D1是答案
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;
using vi = vector<int>;

llt const MOD = 1E9 + 7LL;

int N;
vector<vi> G;
vector<llt> W, R;

void dfs(int u, int p){
    auto & w = W[u];
    w = 1;

    auto & r = R[u];
    r = 1;

    for(auto v : G[u]){
        if(v == p) continue;

        dfs(v, u);
        w = w * R[v] % MOD;
        r = r * ((R[v] + W[v]) % MOD) % MOD;
    }

    return;
}

llt proc(){
    W.assign(N + 1, 0LL);
    R.assign(N + 1, 0LL);

    dfs(1, 0);
    return (W[1] + R[1]) % MOD;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    cin >> N;
    G.assign(N + 1, {});
    for(int a,b,i=1;i<N;++i){
        cin >> a >> b;
        G[a].emplace_back(b);
        G[b].emplace_back(a);
    }
    cout << proc() << endl;
    return 0;
}
